// pages/mine/index.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    login_isshow:false,
    isshow:false,
    add_isshow:false,
    idx:0,
    'userInfo': {
      avatar:'/images/avatar.png',
      nickname: "",
      gender:"",
      dynamicCount:0,
      likeCount:0
    },
    petData:[],
    bottom_list:[
      {
        icon:"/images/setting.png",
        name:"个人中心",
      },
      {
        icon:"/images/question.png",
        name:"问题反馈",
      }
    ] 
  },
  // 进行添加宠物的交互
  // 打开与关闭添加交互面
  add_open(){
    // 判断用户是否登录，若没有就提醒先去登录
    if(this.data.login_isshow == true){
      wx.showToast({
        title: '请先去登录哦',
        icon:'none'
      })
    }
    else{
      this.setData({add_isshow:true})
    }
    
  },
  add_close(){
    this.setData({add_isshow:false})
  },
  // 将数据接收并上传给数据库
  async add_pet(e){
    // 获取宠物数据
    const data = e.detail
    // 进行openid的添加
    const openid = this.data.userInfo.openid
    // 将openid添加到数据中（合并数据）
    const petData = {
      ...data,       // 原有宠物数据
      openid: openid, // 添加openid字段
      createTime: new Date() // 添加创建时间
    };
    // 进行数据库新增
    let res = await getApp().db.collection('pet_data').add({
      data:petData
    })
    //进行本地持久化
    // 查询数据库中所有的该用户的数据
    await getApp().db.collection('pet_data').where({
      openid: openid,
    })
    .get({
      success: function(res) {
        // res.data 是包含以上定义的多条记录的数组
        console.log(res.data)
        wx.setStorage({
          key:'pet_data',
          data:res.data
        })
      }
    })
    
  },

  // 点击设置，隐私中心，问题反馈
  handle_bottom(e){
    const index = e.currentTarget.dataset.idx
    this.setData({
      isshow:true,
      idx:index
    })
  },
  // 从遮罩出返回
  handle_close(){
    this.setData({isshow:false})
  },

  // 选择头像并进行登录
  async handleCloudLogin(e) {
    const { avatarUrl } = e.detail 
    let num = Math.round(Math.random()*10000)
    let nickname = '铲屎官' + num  
    // 调用云函数
    let res = await wx.cloud.callFunction({
      name:'pet_log',
      data:{avatar:avatarUrl,nickname}
    })
    console.log(res)
    // 进行本地用户信息的渲染
    // 合并现有userInfo和新数据（res.data会覆盖同名属性）
    const updatedUserInfo = { ...this.data.userInfo, ...res.result };
    this.setData({userInfo:updatedUserInfo})
    
    // 本地持久化
    wx.setStorage({
      key:'userinfo',
      data:res.result
    })
    // 将登录按钮进行隐藏
    this.setData({login_isshow:false})
  },

  //更新设置好的用户数据
  async updateUserInfo(e){
    const data = e.detail
    let {_id} = data
    // 更改本地持久化
    wx.setStorage({
      key:'userinfo',
      data:data
    })
    // 更新本地数据
    this.setData({userInfo:data})

    // 关键：删除 _id 字段（因为数据库不允许修改 _id）
    if (data._id) {
      delete data._id; // 删除 _id 属性
    }
    // 上传到数据库
    let res = await getApp().db.collection('pet_user').doc(_id).update({
      data:data
    })
    console.log('更新操作',res)
    
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 查看本地缓存有没有用户数据，没有就进行用户登录
    wx.getStorage({
      key:'userinfo',
      // 如果有就直接渲染用户数据
      success:(res)=>{
        console.log(res)
        // 合并现有userInfo和新数据（res.data会覆盖同名属性）
        const updatedUserInfo = { ...this.data.userInfo, ...res.data };

        this.setData({userInfo:updatedUserInfo})
      },
      // 没有就跳转显示用户按钮进行跳转登录进行用户登录
      fail:()=>{
        this.setData({login_isshow:true})
      }
    })
    // 判断本地缓存的宠物数据是否是本人的
    // wx.getStorage({
    //   key:'pet_data',
    //   success:(res)=>{
    //     const pet_data = res.data
    //     if(pet_data[1].openid == this.data.userInfo.openid)
    //     {
    //       // 进行宠物数据的设置
    //       this.setData({petData:pet_data})
    //     }
    //   }

    // })

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})